본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Dynamic Address Translation; DAT; 동적 주소 변환
가상 메모리를 쓰는 시스템에서, 프로그램이 실행되는 동안 가상 주소를 주기억장치의 실제(물리) 주소로 바꾸는 일

가상 메모리를 쓰면 프로그램은 실제 기억장치 크기와 상관없는 가상 주소로 작성되고, 실행 중 명령이 메모리를 참조할 때마다 이 주소를 실제 주소로 바꿔야 한다. 변환을 적재 시점에 한 번 하지 않고 실행하는 동안 참조할 때마다 하기 때문에 '동적'이라고 부른다. 가상 주소와 실제 주소의 대응 관계를 주소 매핑(사상, mapping)이라 한다.

  • 운영체제는 프로세스마다 대응표(페이징이면 페이지 사상표, 세그먼테이션이면 세그먼트 사상표)를 만들어 둔다.
  • 실제 변환은 하드웨어인 메모리 관리 장치(MMU)가 이 표를 읽어 처리한다.
  • 모든 메모리 참조에 끼어드는 작업이므로 DAT 의 속도가 곧 시스템 성능을 좌우한다. 그래서 대응표를 어디에 두느냐에 따라 아래 세 가지 사상 방식이 나뉜다.

페이징에서의 변환

편집 원본 편집

가상 주소를 (페이지 번호 p, 변위 d) 로 나눈다.

  1. 페이지 번호 p 로 페이지 사상표를 찾아 그 페이지가 올라가 있는 페이지 프레임 번호 p′ 를 얻는다
  2. 실제 주소 = p′ 의 시작 주소 + d
  3. 표에 해당 페이지가 주기억장치에 없다고 표시돼 있으면 페이지 부재가 일어나 운영체제가 보조기억장치에서 읽어 온다(가상 메모리 페이지 교체)

사상 방식 세 가지

편집 원본 편집
Direct Mapping
  • 페이지 사상표 전체를 주기억장치에 둔다. 사상표의 시작 주소는 페이지 사상표 기준 레지스터에 담는다.
  • 데이터 한 번을 읽으려면 사상표를 읽는 접근 한 번 + 실제 데이터를 읽는 접근 한 번, 모두 주기억장치를 두 번 참조한다.
  • 비용이 들지 않지만 가장 느리다.
Associative Mapping
  • 페이지 사상표 전체를 연관 메모리(내용으로 찾는 고속 기억장치)에 둔다.
  • 페이지 번호를 주면 모든 항목을 동시에 비교해 바로 프레임 번호를 찾으므로 가장 빠르다.
  • 연관 메모리가 매우 비싸서 사상표 전체를 담는 일은 현실적이지 않다.

연관/직접 사상

편집 원본 편집
Associative/Direct Mapping; 직접/연관 사상, 혼합 사상
  • 최근에 쓴 페이지의 항목만 연관 메모리에 두고, 전체 사상표는 주기억장치에 둔다. 오늘날의 변환 색인 버퍼(TLB)가 이 방식이다.
  • 먼저 연관 메모리에서 찾고(적중하면 연관 사상만큼 빠르다), 없으면 주기억장치의 사상표에서 찾은 뒤 그 항목을 연관 메모리에 넣는다.
  • 참조 지역성 덕분에 적은 연관 메모리로도 적중률이 높아, 속도와 비용의 균형이 가장 좋다.
방식 사상표를 두는 곳 변환 속도 비용
연관 사상 전부 연관 메모리 가장 빠름 가장 비쌈
연관/직접 사상 일부 연관 메모리 + 전체 주기억장치 중간(적중하면 연관 사상과 같음) 중간
직접 사상 전부 주기억장치 가장 느림 가장 쌈

따라서 DAT 속도가 빠른 순서는 연관 사상 → 연관/직접 사상 → 직접 사상이다.

캐시 사상과 헷갈리지 않기

편집 원본 편집

캐시 메모리에도 직접 사상·연관 사상·집합 연관(직접/연관) 사상이라는 같은 이름의 기법이 있다. 그쪽은 주기억장치 블록을 캐시의 어느 줄에 둘지를 정하는 방법이고, 여기의 사상은 가상 주소를 실제 주소로 바꾸는 대응표를 어디에 두느냐의 문제다. 이름은 같지만 다루는 대상이 다르다. 둘 다 빠른 탐색에 연관 메모리를 쓴다는 점은 같다.

  • 「Operating Systems」, Harvey M. Deitel, Addison-Wesley, 1990.